home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-12-29 | 2.4 KB | 73 lines | [TEXT/MEDT] |
- MODULE Rectangles; (*NW 26.8.81 / Lilith *)
- (*MW 19.3.85 / NS32016*)
- (*WH 22.2.86 / MC68000*)
-
- (* This program shows the access to the Macintosh Toolbox *)
-
- FROM SYSTEM IMPORT
- ADDRESS, ADR;
- FROM TerminalIn IMPORT
- BusyRead;
- FROM QuickDraw IMPORT
- GrafPtr, Point, Rect, GetPort, SetPort, SetOrigin,
- SetRect, InvertRect, OffsetRect, InsetRect;
-
- VAR
- x0, y0, dx0, dy0, x1, y1, dx1, dy1, X, Y, W, H, width, height: INTEGER;
- ch: CHAR;
- myWindow, oldWindow: GrafPtr;
- oldOrigin: Point;
- screen, rect: Rect;
- title: ARRAY [0..10] OF CHAR;
-
- PROCEDURE NewWindow(wStorage: ADDRESS;
- VAR boundsRect: Rect;
- title: ADDRESS;
- visible: BOOLEAN;
- theProc: INTEGER;
- behind: ADDRESS;
- goAwayFlag: BOOLEAN;
- refCon: LONGINT): ADDRESS; CODE 0A913H;
- PROCEDURE DisposeWindow(theWindows: ADDRESS); CODE 0A914H;
-
- BEGIN
- title := ' Rectangle'; title[0] := 12C; (* length of string *)
- GetPort(oldWindow); screen := oldWindow^.portBits.bounds;
- oldOrigin := oldWindow^.portRect.topLeft;
- OffsetRect(screen, 0, 18); InsetRect(screen, 5, 23);
- myWindow := NewWindow(NIL, screen, ADR(title), TRUE, 0, -1D, FALSE, 0D);
- SetPort(myWindow);
- WITH myWindow^.portRect DO
- width := right - left;
- height := bottom - top;
- END;
- SetOrigin(0, 0);
- x0 := 0; y0 := 0; dx0 := 12; dy0 := 28;
- x1 := 0; y1 := 0; dx1 := 20; dy1 := 44;
- REPEAT
- x0 := x0 + dx0;
- IF x0 < 0 THEN x0 := -x0; dx0 := -dx0
- ELSIF x0 > width THEN x0 := 2*width - x0; dx0 := -dx0
- END ;
- y0 := y0 + dy0;
- IF y0 < 0 THEN y0 := -y0; dy0 := -dy0
- ELSIF y0 > height THEN y0 := 2*height - y0; dy0 := -dy0
- END ;
- x1 := x1 + dx1;
- IF x1 < 0 THEN x1 := -x1; dx1 := -dx1
- ELSIF x1 > width THEN x1 := 2*width - x1; dx1 := -dx1
- END ;
- y1 := y1 + dy1;
- IF y1 < 0 THEN y1 := -y1; dy1 := -dy1
- ELSIF y1 > height THEN y1 := 2*height - y1; dy1 := -dy1
- END ;
- IF x0 < x1 THEN X := x0 ELSE X := x1 END ;
- IF y0 < y1 THEN Y := y0 ELSE Y := y1 END ;
- W := ABS(x0-x1); H := ABS(y0-y1);
- SetRect(rect, X, Y, X+W, Y+H); InvertRect(rect);
- BusyRead(ch)
- UNTIL ch # 0C;
- DisposeWindow(myWindow);
- SetPort(oldWindow); SetOrigin(oldOrigin.h, oldOrigin.v);
- END Rectangles.
-